package com.hjw.junit;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * 测试递归算法
 * @author hjwStrart
 * @create 2022-01-08 11:11
 */
public class TestRecursion {
    private static int count = 0;//用来记录recusion（）被调用的次数
    public static void main(String[] args) {

//        recursion(10);
        System.out.println(hierarchy(20));
//        BigDecimal bg1 = new BigDecimal(16);
//        BigDecimal bg2 = new BigDecimal(16);
//        System.out.println(bg1.multiply(bg2));
    }

    public static int recursion(int k){

        System.out.println("count:" + count + ",k :" + k);
        if(k <= 0){

            return 0;
        }
        count ++ ;
        return recursion( k - 1) + recursion( k - 1);
    }


    /**
     * 使用递归算法计算阶层，使用BigDecimal避免结果过大，不能正常显示
     * @param k
     * @return
     */
    public static BigDecimal hierarchy(int k){
        if( k == 0 || k == 1){ // 定义递归的结束条件
            return new BigDecimal(1);
        }else{
            return new BigDecimal(k).multiply(hierarchy(k-1));//返回 n * n-1 的结果（）
        }
    }

}
